বাইনারি ফাইল হ্যান্ডলিং

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) ফাইল হ্যান্ডলিং |
239
239

বাইনারি ফাইল হ্যান্ডলিং C++ এ এমন একটি প্রক্রিয়া যেখানে ডেটা ফাইলের ভিতরে বাইনারি ফর্ম্যাটে সংরক্ষণ বা পড়া হয়। সাধারণত টেক্সট ফাইলের ক্ষেত্রে ডেটা মানব-পঠনযোগ্য থাকে, তবে বাইনারি ফাইলে ডেটা সংরক্ষণ করা হয় বাইনারি ফর্ম্যাটে, যা সরাসরি মেশিন-রিডেবল। এতে করে ফাইলের আকার কম হয় এবং পড়া/লেখার গতি বাড়ে।

C++ এ বাইনারি ফাইল হ্যান্ডলিং

C++ এ বাইনারি ফাইল হ্যান্ডলিং এর জন্য fstream লাইব্রেরির ifstream এবং ofstream ক্লাস ব্যবহার করা হয়। ios::binary মোডটি ব্যবহার করে ফাইল বাইনারি মোডে খোলা হয় এবং ডেটা লিখতে বা পড়তে write() এবং read() মেথড ব্যবহার করা হয়।

বাইনারি ফাইলে লেখা (Writing to a Binary File)

write() মেথড ব্যবহার করে ডেটা বাইনারি ফাইলে লেখা হয়। এর জন্য ডেটার ঠিকানা ও ডেটার সাইজ ইনপুট হিসেবে দিতে হয়।

উদাহরণ: বাইনারি ফাইলে লেখা

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person person1 = {"John Doe", 30, 5.9};

    // বাইনারি ফাইল খোলা এবং ডেটা লেখা
    ofstream outFile("person.dat", ios::binary);
    if (!outFile) {
        cout << "Error opening file for writing." << endl;
        return 1;
    }

    // স্ট্রাকচারের ডেটা বাইনারি ফাইলে লেখা
    outFile.write(reinterpret_cast<char*>(&person1), sizeof(person1));
    outFile.close();

    cout << "Data written to binary file successfully." << endl;
    return 0;
}

বর্ণনা:

  • এখানে Person নামে একটি স্ট্রাকচার ডিফাইন করা হয়েছে, যা name, age, এবং height নামে তিনটি ডেটা মেম্বার ধারণ করে।
  • "person.dat" নামে একটি বাইনারি ফাইল খোলা হয়েছে এবং write() মেথড ব্যবহার করে person1 অবজেক্টের ডেটা লেখা হয়েছে।
  • reinterpret_cast<char*> ব্যবহার করে ডেটার ঠিকানা ক্যারেক্টার পয়েন্টারে রূপান্তর করা হয়েছে।

বাইনারি ফাইল থেকে পড়া (Reading from a Binary File)

read() মেথড ব্যবহার করে ডেটা বাইনারি ফাইল থেকে পড়া হয়। read() মেথডেও ডেটার ঠিকানা এবং ডেটার সাইজ ইনপুট হিসেবে দিতে হয়।

উদাহরণ: বাইনারি ফাইল থেকে পড়া

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person person1;

    // বাইনারি ফাইল খোলা এবং ডেটা পড়া
    ifstream inFile("person.dat", ios::binary);
    if (!inFile) {
        cout << "Error opening file for reading." << endl;
        return 1;
    }

    // স্ট্রাকচারের ডেটা পড়া
    inFile.read(reinterpret_cast<char*>(&person1), sizeof(person1));
    inFile.close();

    // পড়া ডেটা প্রদর্শন করা
    cout << "Name: " << person1.name << endl;
    cout << "Age: " << person1.age << endl;
    cout << "Height: " << person1.height << endl;

    return 0;
}

বর্ণনা:

  • "person.dat" ফাইলটি বাইনারি মোডে খোলা হয়েছে এবং read() মেথড ব্যবহার করে person1 অবজেক্টে ডেটা পড়া হয়েছে।
  • পড়া ডেটা person1 অবজেক্টে সংরক্ষিত হয়েছে এবং পরে cout দিয়ে প্রদর্শন করা হয়েছে।

একাধিক রেকর্ড লেখা ও পড়া

বাইনারি ফাইলে একাধিক রেকর্ড সংরক্ষণ এবং পড়ার জন্য একটি লুপ ব্যবহার করা হয়। প্রতিটি রেকর্ডের জন্য write() এবং read() মেথড কল করা হয়।

উদাহরণ: একাধিক রেকর্ড লেখা

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person persons[2] = { {"Alice", 28, 5.5}, {"Bob", 32, 5.8} };

    // বাইনারি ফাইল খোলা এবং একাধিক রেকর্ড লেখা
    ofstream outFile("persons.dat", ios::binary);
    if (!outFile) {
        cout << "Error opening file for writing." << endl;
        return 1;
    }

    for (int i = 0; i < 2; i++) {
        outFile.write(reinterpret_cast<char*>(&persons[i]), sizeof(persons[i]));
    }
    outFile.close();

    cout << "Multiple records written to binary file successfully." << endl;
    return 0;
}

উদাহরণ: একাধিক রেকর্ড পড়া

#include <iostream>
#include <fstream>
using namespace std;

struct Person {
    char name[20];
    int age;
    float height;
};

int main() {
    Person persons[2];

    // বাইনারি ফাইল খোলা এবং একাধিক রেকর্ড পড়া
    ifstream inFile("persons.dat", ios::binary);
    if (!inFile) {
        cout << "Error opening file for reading." << endl;
        return 1;
    }

    for (int i = 0; i < 2; i++) {
        inFile.read(reinterpret_cast<char*>(&persons[i]), sizeof(persons[i]));
    }
    inFile.close();

    // পড়া ডেটা প্রদর্শন করা
    for (int i = 0; i < 2; i++) {
        cout << "Name: " << persons[i].name << ", Age: " << persons[i].age << ", Height: " << persons[i].height << endl;
    }

    return 0;
}

বাইনারি ফাইল হ্যান্ডলিং এ ব্যবহৃত গুরুত্বপূর্ণ মেথড

write(): ফাইলে বাইনারি ডেটা লেখা হয়।

outFile.write(reinterpret_cast<char*>(&data), sizeof(data));

read(): বাইনারি ফাইল থেকে ডেটা পড়া হয়।

inFile.read(reinterpret_cast<char*>(&data), sizeof(data));

বাইনারি ফাইলের সুবিধা

  1. দ্রুত ডেটা এক্সেস: বাইনারি ফাইল হ্যান্ডলিংয়ের গতি বেশি, কারণ এতে ডেটা সরাসরি মেমোরি ফরম্যাটে সংরক্ষিত থাকে।
  2. ফাইল সাইজ কম: বাইনারি ফাইলের সাইজ ছোট হয়, কারণ এতে অতিরিক্ত ফরম্যাটিং সংরক্ষণ করা হয় না।
  3. ডেটা নিরাপত্তা: ডেটা মানুষের পঠনযোগ্য না থাকায় এটি আরও নিরাপদ থাকে।

সারসংক্ষেপ

  • বাইনারি ফাইলে লেখা: write() মেথড ব্যবহার করে ডেটা ফাইলে লেখা হয়।
  • বাইনারি ফাইল থেকে পড়া: read() মেথড ব্যবহার করে ডেটা ফাইল থেকে পড়া হয়।
  • ডেটা সংরক্ষণ এবং পড়ার জন্য ডেটার ঠিকানা ও সাইজ প্রদান করতে হয়।

বাইনারি ফাইল হ্যান্ডলিং ব্যবহারে ডেটা দ্রুত এবং নিরাপদে সংরক্ষণ এবং পরিচালনা করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion